package com.erp.gather.domain.bo;

import com.ruoyi.gather.api.domain.ErpCollectProductExpand;
import com.ruoyi.common.core.web.oldDomain.BaseEntity;
import com.ruoyi.gather.api.domain.ErpCollectProductSku;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.List;

/**
 * 采集商品;参考AE-商品：发布产品信息（aliexpress.postproduct.redefining.postaeproduct）业务对象 erp_collect_product
 *
 * @author erp
 * @date 2023-03-07
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class ErpCollectProductBo extends BaseEntity {

    /**
     * 主键
     */
    private Long id;

    /**
     * 商品所属类目ID;商品所属类目ID。必须是叶子类目，通过类目接口获取。
     */
    private Long categoryId;

    /**
     * 产品的主图URL列表;产品的主图URL列表。如果这个产品有多张主图，那么这些URL之间使用英文分号(";")隔开。一个产品最多只能有6张主图。图片格式JPEG，文件大小5M以内；图片像素建议大于800*800；横向和纵向比例建议1:1到1:1.3之间；图片中产品主体占比建议大于70%；背景白色或纯色，风格统一；如果有LOGO，建议放置在左上角，不宜过大。不建议自行添加促销标签或文字。切勿盗用他人图片，以免受网规处罚。更多说明请至http://seller.aliexpress.com/so/tupianguifan.php进行了解。
     */
    private String imageURLs;

    /**
     * 商品标题;商品标题 长度在1-128之间英文（ascii码从00到7F），不允许有这几个字符。
     */
    private String subject;

    /**
     * 白底图
     */
    private String white;

    /**
     * 营销图
     */
    private String marketing;

    /**
     * 商品视频
     */
    private String media;

    /**
     * 采集价格
     */
    private String collectProductPrice;

    /**
     * 商品一口价;商品一口价。取值范围:0-100000,保留两位小数;单位:美元。如:200.07，表示:200美元7分。需要在正确的价格区间内。上传多属性产品的时候，有好几个SKU和价格，productprice无需填写。
     */
    private String productPrice;

    /**
     * 商品无线端详情;mobile Detail详情，格式请参考https://developers.aliexpress.com/doc.htm#?docType=1&docId=108598。
     */
    private String mobileDetail;

    /**
     * 商品包装长度;商品包装长度。取值范围:1-700,单位:厘米。产品包装尺寸的最大值+2×（第二大值+第三大值）不能超过2700厘米。
     */
    private BigDecimal packageLength;

    /**
     * 商品包装宽度;商品包装宽度。取值范围:1-700,单位:厘米。
     */
    private String packageWidth;

    /**
     * 商品包装高度;商品包装高度。取值范围:1-700,单位:厘米。
     */
    private BigDecimal packageHeight;

    /**
     * 商品毛重;商品毛重,取值范围:0.001-500.000,保留三位小数,采用进位制,单位:公斤。
     */
    private String grossWeight;

    /**
     * 商品单位;参考数据字典AE_PRODUCT_UNIT（商品单位）
     */
    private Long productUnit;

    /**
     * 自定义属性;产品属性，以json格式进行封装后提交。参看aeopAeProductPropertys数据结构。此字段是否必填，需从类目接口getChildAttributesResultByPostCateIdAndPath获取（即获取到的required来判断属性是否必填），该项只输入普通类目属性数据，不可输入sku类目属性。 对于类目属性包含子类目属性的情况，此处不确认父属性和子属性，即选择任何属性，都以该对象提交。 对于一个属性多个选中值的情况，以多个该对象存放。 其中"attrNameId","attrValueId"为整型(Integer), "attrName", "attrValue"为字符串类型(String)。 1. 当设置一些系统属性时，如果类目自定义了一些候选值，只需要提供"attrNameId"和"attrValueId"即可。例如：{"attrNameId":494, "attrValueId":284}。 2. 当设置一些需要手工输入属性内容时，只需要提供"attrNameId"和"attrValue"即可。例如：{"attrNameId": 1000, "attrValue": "test"} 3. 当设置自定义属性时，需要提供"attrName"和"attrValue"即可。例如: {"attrName": "Color", "attrValue": "red"} 4. 当设置一个Other属性时，需要提供"attrNameId", "attrValueId", "attrValue"三个参数。例如：{"attrNameId": 1000, "attrValueId": 4, "attrValue": "Other Value"}。
     */
    private String customAttributes;

    /**
     * 详情;Detail详情。以下内容会被过滤，但不影响产品提交:(1)含有script	extareastyleiframeframeinputpreutton均被过滤.(2)a标签href属性只允许是aliexpress.com域名连接,否则被过滤.(3)img标签src只允许alibaba.com或者aliimg.com域名链接.(4)任意具有style属性的html标签，其style受检查，只允许一般简单的样式.不允许的内容将被过滤.(5)如果发现html内容标签缺失，会自动补全标签.
     */
    private String detail;
    private String detailImg;

    /**
     * 尺码表模版ID;尺码表模版ID。必须选择当前类目下的尺码模版。
     */
    private Long sizechartId;

    /**
     * 模特尺码数据;模特尺码数据，最多5个，单位厘米。hips:臀围;waist:腰围;bust:胸围;height:身高;mode_size:试穿尺码;
     */
    private String modeSizeChartList;

    /**
     * 采集链接
     */
    private String collectUrl;

    /**
     * 乐观锁
     */
    private String revision;


    /**
     * sku
     */
    private List<ErpCollectProductSku> skuList;

    /**
     * 扩展表
     */
    private ErpCollectProductExpand expand;

    // 排序：1价格排序正序 2价格排序倒序 3时间排序正序 4时间排序倒序
    private Integer orderBy;

    // 是否为采集商品（0是 1否）
    private Integer isCollect;

    // 是否为品牌（0是 1否）
    private Integer isBrand;

    // 是否为已优化
    private Integer isOptimize;
    // 是否为已测试发布
    private Integer isUploadTest;
    // 是否为发布商品
    private Integer isGrounding;
    // 是否为已编辑
    private Integer isEdit;
    // 是否为已运费试算
    private Integer isFreight;
    // 是否为已翻译
    private Integer isTranslate;

    // 关键词
    private String keyword;

    // 价格最小值
    private String productPriceMin;

    // 价格最大值
    private String productPriceMax;
    private Long collectUserId;

    private Integer type; // 1:代表公共产品库

    // 抠图状态
    private Integer isMatting;

    // 任务指派 0未完成，1已完成
    private Integer isCompleteTask;


    private String skuCode;
    private String brandId; // 品牌id

    /**
     * 运费模板类型：
     * 1标准-0，1，2
     * 2大包-3
     * 3经济-4，5
     */
    private Integer templateType;

    private Integer moduleType=0; //菜单模块类型 1品牌产品列表 0其他模块列表

    /**
     * 是否上架
     */
    private String onShelf;

    /**
     * 1：已完成；3：已翻译待确认
     */
    private Integer editStatus;


    private Integer isBindingQualifications;

    private Long qualificationsId;

    /**
     * 是否自动优化（0：初始；1：成功；2：失败）
     */
    private Integer isAutoOptimize;

    private String classifyLabel;
}
